<?php
namespace App\Base\Repositories;
use App\Base\Models\BaseModel;

/**
 * Created by 荣耀电竞.
 * User: 林子彦 <278805354@qq.com>
 * Date: 2018/5/17 0017
 * Time: 17:22
 */
class DbBaseRepository{
    /**
     * @var  BaseModel $model
     */
    private $model;

    /**
     * 数据的新增
     * @param $data
     * @return mixed
     */
    public function create($data){
      $data=$this->getModel()->filter($data);
      return $this->getModel()->newQuery()->create($data);
    }

    /**
     * 数据更新与提交
     * @param $data
     * @return mixed
     */

    public function update($data){
        $id=$data["id"];
        unset($data["id"]);
        $data=$this->getModel()->filter($data);
        return $this->getModel()->newQuery()->where("id",$id)->update($data);
    }

    /**
     * 数据删除
     * @param $data
     * @return mixed
     */
    public function delete($data){
        $data=$this->getModel()->filter($data);
        return $this->getModel()->newQuery()->where($data)->delete($data);
    }

    /**
     * 数据更新
     * @param $data
     * @param $where
     * @return \Illuminate\Database\Eloquent\Model
     */
   public function updateOrCreate($data,$where){
       $data=$this->getModel()->filter($data);
      return $this->getModel()->newQuery()->updateOrCreate($data,$where);
   }
    /**
     * @param null $model 模型
     * @param null $data  条件
     * @param null $order  排序
     * @param bool $isPage 是否分页
     */
    public function searchModelData($model=null,$data=null,$order=null,$isPage=TRUE){
        if(empty($model)){
            $model=$this->getModel();
        }
        $data=$this->getModel()->filter($data);
        if($isPage){
           return $model->newQuery()->where($data)->orderBy($order)->paginate();
        }else{
            return $model->newQuery()->where($data)->orderBy($order)->get();
        }
    }

    /**
     * 设置模型
     * @param $model
     * @return mixed
     */
    public function setModel($model){
      return $this->model=$model;
    }

    /**
     * @return BaseModel $model
     */
    public function getModel(){
        return $this->model;
    }


}